﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;
using System.Windows.Forms;

public partial class Teams_PlayerProfile : System.Web.UI.Page
{
    string plectext, druzynatext, dataUrodzenia, id, path, autor;
    int intDzien, intMiesiac, intRok;
    bool bNew;
    FileInfo info;




    protected void Page_Load(object sender, EventArgs e)
    {
        MembershipUser User = Membership.GetUser(HttpContext.Current.User.Identity.Name);
        try
        {
            autor = User.UserName;
        }
        catch(Exception ex){
            TextArea1.Visible = false;
            Button4.Visible = false;
            Label1.Visible = false;
        }

        if (!IsPostBack)
        {
            string action = Request.QueryString["action"];
            id = Request.QueryString["id"];
            if (action == null)
            {
                Response.Redirect("~/PlayerProfile.aspx?action=new&id=1");
                Image1.ImageUrl = "~/images/default_player.gif";
            }
            else if (action.Equals("view"))
            {
                MultiView1.ActiveViewIndex = 1;
                Image1.ImageUrl = "~/ShowImage.ashx?id=" + id + "&type=player_photo";
                if(Image1.ImageUrl == null)
                    Image1.ImageUrl = "~/images/default_player.gif";
                bNew = true;
            }
            else if (action.Equals("edit"))
            {
                zapiszbutton.Text = "Aktualizuj";
                Image1.ImageUrl = "~/ShowImage.ashx?id=" + id + "&type=player_photo";
                MultiView1.ActiveViewIndex = 0;
            }
            else if (action.Equals("new"))
            {
                bNew = true;
                Button5.Visible = false;
                Button2.Visible = false;
                Button6.Visible = true;
                Image1.ImageUrl = "~/images/default_player.gif";
                MultiView1.ActiveViewIndex = 0;
            }
            else
            {
                Response.Write("Illegal page request.");
                Response.End();
            }


            DataView zawodnik = (DataView)dbzawodnicy.Select(DataSourceSelectArguments.Empty);
            if (zawodnik != null && !bNew)
                foreach (DataRowView drv in zawodnik)
                {
                    imie.Text = drv["Imie"].ToString();
                    nazwisko.Text = drv["Nazwisko"].ToString();
                    pozycja.Text = drv["Pozycja"].ToString();
                    miasto.Text = drv["Miasto"].ToString();
                    email.Text = drv["E-mail"].ToString();
                    gg.Text = drv["gg"].ToString();
                    waga.Text = drv["waga"].ToString();
                    wzrost.Text = drv["wzrost"].ToString();
                    ksywka.Text = drv["ksywka"].ToString();
                    zainteresowania.Text = drv["zainteresowania"].ToString();
                    plectext = drv["plec"].ToString();
                    druzynatext = drv["id_druzyny"].ToString();
                    dataUrodzenia = drv["Urodzony"].ToString();
                }

            if (!bNew)
            {
                string[] arrDataUrodzenia = dataUrodzenia.Split('-');
                intRok = Int32.Parse(arrDataUrodzenia[0]);
                intMiesiac = Int32.Parse(arrDataUrodzenia[1]);
                intDzien = Int32.Parse(arrDataUrodzenia[2].Remove(arrDataUrodzenia[2].IndexOf(' ')));
            }

            rok.Items.Clear();
            for (int i = 2000; i > 1900; i--)
            {
                rok.Items.Add(i.ToString());
                if (!bNew)
                    if (i == intRok)
                        rok.Items[2000 - i].Selected = true;
            }

            miesiac.Items.Clear();
            miesiac.Items.Add("Styczeń");
            miesiac.Items.Add("Luty");
            miesiac.Items.Add("Marzec");
            miesiac.Items.Add("Kwiecień");
            miesiac.Items.Add("Maj");
            miesiac.Items.Add("Czerwiec");
            miesiac.Items.Add("Lipiec");
            miesiac.Items.Add("Sierpień");
            miesiac.Items.Add("Wrzesień");
            miesiac.Items.Add("Październik");
            miesiac.Items.Add("Listopad");
            miesiac.Items.Add("Grudzień");


            for (int i = 0; i < 12; i++)
            {
                miesiac.Items[i].Value = (i + 1).ToString();
                if (!bNew)
                    if (i + 1 == intMiesiac)
                    {
                        miesiac.Items[i].Selected = true;
                    }
            }

            FillDays();

            // Kluby

            klub.DataSource = dbdruzyny;
            klub.DataTextField = "nazwa";
            klub.DataValueField = "id_druzyny";
            klub.DataBind();
            if (!bNew)
                klub.Items[Int32.Parse(druzynatext) - 1].Selected = true;

            // Plec
            plec.Items.Clear();
            plec.Items.Add("M");
            plec.Items.Add("K");
            if (!bNew)
            {
                if (plectext.Equals("M"))
                    plec.Items[0].Selected = true;
                else
                    plec.Items[1].Selected = true;
            }
        }
    }

    public void FillDays()
    {
        dzien.Items.Clear();
        int intMiesiac = GetSelectedMonth();
        if(intMiesiac == 1 || intMiesiac == 3 || intMiesiac == 5 || intMiesiac == 7 || intMiesiac == 8 || intMiesiac == 10 || intMiesiac == 12)
            for (int i = 1; i <= 31; i++)
            {
                dzien.Items.Add(i.ToString());
                dzien.Items[i - 1].Value = i.ToString();
                if (!bNew)
                    if (i == intDzien)
                        dzien.Items[i - 1].Selected = true;
            }
        else if (intMiesiac == 2)
            for (int i = 1; i <= 28; i++)
            {
                dzien.Items.Add(i.ToString());
                dzien.Items[i - 1].Value = i.ToString();
                if (!bNew)
                    if (i == intDzien)
                        dzien.Items[i - 1].Selected = true;
            }
        else
            for (int i = 1; i <= 30; i++)
            {
                dzien.Items.Add(i.ToString());
                dzien.Items[i - 1].Value = i.ToString();
                if (!bNew)
                    if (i == intDzien)
                        dzien.Items[i - 1].Selected = true;
            }
    }

    public int GetSelectedMonth()
    {
        for (int i = 0; i < 12; i++)
            if (miesiac.Items[i].Selected)
                return i;
        return 1;
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        byte[] content = new byte[1];
        bool isFoto = false;
        string action = Request.QueryString["action"];
        id = Request.QueryString["id"];

        try
        {
            info = new FileInfo(zdjecie.PostedFile.FileName);

            if (!info.Exists)
                this.RegisterClientScriptBlock("alertMsg", "<script>alert('Proszę wybrać plik z obrazkiem.');</script>");
            else
            {
                switch (info.Extension.ToUpper())
                {
                    case ".JPG": break;
                    case ".GIF": break;
                    case ".BMP": break;
                    default: this.RegisterClientScriptBlock("alertMsg", "<script>alert('Niepoprawny typ pliku.');</script>"); break;
                }
            }
            content = new byte[info.Length];
            FileStream imagestream = info.OpenRead();
            imagestream.Read(content, 0, content.Length);
            imagestream.Close();
            isFoto = true;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            isFoto = false;
        }

        string strDataUrodzenia = rok.Items[rok.SelectedIndex].Value.ToString() + "-" + miesiac.Items[miesiac.SelectedIndex].Value.ToString() + "-" + dzien.Items[dzien.SelectedIndex].Value.ToString();
        string commandText;
        if (action.Equals("new") && isFoto)
        {
            commandText = @"INSERT INTO 
                                ZAWODNICY 
                            (status, id_druzyny, imie, nazwisko, ksywka, pozycja, zdjecie, data_urodzenia, miasto, plec, email, gg, wzrost, waga, zainteresowania) 
                                VALUES 
                            (@status, @id_druzyny, @imie, @nazwisko, @ksywka, @pozycja, @zdjecie, @data_urodzenia, @miasto, @plec, @email, @gg, @wzrost, @waga, @zainteresowania)";
        }
        else if (isFoto)
        {
            commandText = @"UPDATE
                                ZAWODNICY 
                             SET status = @status, id_druzyny = @id_druzyny, imie = @imie, nazwisko = @nazwisko,
                             ksywka = @ksywka, pozycja = @pozycja, zdjecie = @zdjecie,
                             data_urodzenia = @data_urodzenia, miasto = @miasto, plec = @plec, 
                             email = @email, gg = @gg, wzrost = @wzrost, waga = @waga, zainteresowania = @zainteresowania
                                WHERE  id_zawodnika = '" + id + "'";
        }
        else if (action.Equals("new") && !isFoto)
        {
            commandText = @"INSERT INTO 
                                ZAWODNICY 
                            (status, id_druzyny, imie, nazwisko, ksywka, pozycja, data_urodzenia, miasto, plec, email, gg, wzrost, waga, zainteresowania) 
                                VALUES 
                            (@status, @id_druzyny, @imie, @nazwisko, @ksywka, @pozycja, @data_urodzenia, @miasto, @plec, @email, @gg, @wzrost, @waga, @zainteresowania)";
        }
        else
        {
            commandText = @"UPDATE
                                ZAWODNICY 
                             SET status = @status, id_druzyny = @id_druzyny, imie = @imie, nazwisko = @nazwisko,
                             ksywka = @ksywka, pozycja = @pozycja,
                             data_urodzenia = @data_urodzenia, miasto = @miasto, plec = @plec, 
                             email = @email, gg = @gg, wzrost = @wzrost, waga = @waga, zainteresowania = @zainteresowania
                                WHERE  id_zawodnika = '" + id + "'";
        }
        
        DateTime dDataUrodzenia = DateTime.Parse(strDataUrodzenia);

        try
        {
            using (SqlConnection connection = new SqlConnection(dbzawodnicy.ConnectionString))
            {
                SqlCommand command = new SqlCommand(commandText, connection);

                command.Parameters.Add("@status", SqlDbType.Int);
                command.Parameters["@status"].Value = 1;
                command.Parameters.Add("@imie", SqlDbType.NVarChar);
                command.Parameters["@imie"].Value = imie.Text.ToString();
                command.Parameters.Add("@nazwisko", SqlDbType.NVarChar);
                command.Parameters["@nazwisko"].Value = nazwisko.Text.ToString();
                command.Parameters.Add("@ksywka", SqlDbType.NVarChar);
                command.Parameters["@ksywka"].Value = ksywka.Text.ToString();
                command.Parameters.Add("@pozycja", SqlDbType.NVarChar);
                command.Parameters["@pozycja"].Value = pozycja.Text.ToString();
                if (isFoto)
                {
                    command.Parameters.Add("@zdjecie", SqlDbType.Image);
                    command.Parameters["@zdjecie"].Value = content;
                }
                command.Parameters.Add("@data_urodzenia", SqlDbType.DateTime);
                command.Parameters["@data_urodzenia"].Value = dDataUrodzenia;
                command.Parameters.Add("@miasto", SqlDbType.NVarChar);
                command.Parameters["@miasto"].Value = miasto.Text.ToString();
                command.Parameters.Add("@plec", SqlDbType.VarChar);
                command.Parameters["@plec"].Value = plec.Text.ToString();
                command.Parameters.Add("@email", SqlDbType.NVarChar);
                command.Parameters["@email"].Value = email.Text.ToString();
                command.Parameters.Add("@gg", SqlDbType.VarChar);
                command.Parameters["@gg"].Value = gg.Text.ToString();
                command.Parameters.Add("@wzrost", SqlDbType.Int);
                command.Parameters["@wzrost"].Value = Int32.Parse(wzrost.Text.ToString());
                command.Parameters.Add("@waga", SqlDbType.Int);
                command.Parameters["@waga"].Value = Int32.Parse(waga.Text.ToString());
                command.Parameters.Add("@id_druzyny", SqlDbType.Int);
                command.Parameters["@id_druzyny"].Value = klub.SelectedIndex + 1;
                command.Parameters.Add("@zainteresowania", SqlDbType.NVarChar);
                command.Parameters["@zainteresowania"].Value = zainteresowania.Text.ToString();

                connection.Open();
                command.ExecuteNonQuery();

            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            MessageBox.Show("Proszę podać poprawne dane.","Błąd");
            Response.Redirect("~/PlayerProfile.aspx?action=new&id=1");           
        }

        Response.Redirect("~/TeamProfile.aspx?t=" + (klub.SelectedIndex + 1).ToString());
    }

    protected void Button3_Click(object sender, EventArgs e)
    {
        string id_druzyny = "";
        DataView zawodnik = (DataView)dbzawodnicy.Select(DataSourceSelectArguments.Empty);
        if(zawodnik != null)
            foreach (DataRowView drv in zawodnik)
            {
                id_druzyny = drv["id_druzyny"].ToString();
            }

        Response.Redirect("~/TeamProfile.aspx?t=" + id_druzyny);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

    }
    protected void Button4_Click(object sender, EventArgs e)
    {
        string commandText;
        int id_zawodnika = Int32.Parse(Request.QueryString["id"]);
        
        commandText = @"INSERT INTO KOMNETARZE 
                        (id_zawodnika, autor, data, tresc) VALUES (@id_zawodnika, @autor, @data, @tresc)";
        try
        {

            using (SqlConnection connection = new SqlConnection(dbKomentarze.ConnectionString))
            {
                SqlCommand command = new SqlCommand(commandText, connection);

                command.Parameters.Add("@id_zawodnika", SqlDbType.Int);
                command.Parameters["@id_zawodnika"].Value = id_zawodnika;
                command.Parameters.Add("@autor", SqlDbType.NVarChar);
                command.Parameters["@autor"].Value = autor;
                command.Parameters.Add("@data", SqlDbType.DateTime);
                command.Parameters["@data"].Value = DateTime.Now;
                command.Parameters.Add("@tresc", SqlDbType.NVarChar);
                command.Parameters["@tresc"].Value = TextArea1.InnerText;

                connection.Open();
                command.ExecuteNonQuery();
                
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            throw;
        }

        Response.Redirect("~/PlayerProfile.aspx?id=" + id_zawodnika + "&action=view");

    }
    protected void Button5_Click(object sender, EventArgs e)
    {
        Stream myStream = null;
        OpenFileDialog openFileDialog1 = new OpenFileDialog();

        openFileDialog1.InitialDirectory = "c:\\" ;
        openFileDialog1.Filter = "JPG (*.jpg)|*.txt| JPEG (*.jpeg)|*.jpeg" ;
        openFileDialog1.FilterIndex = 1 ;
        openFileDialog1.RestoreDirectory = true ;

        if(openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        path = openFileDialog1.FileName;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Błąd czytanie z dysku. Kod błędu: " + ex.Message);
            }
        }
    }
    protected void Button5_Click1(object sender, EventArgs e)
    {
        DialogResult result = MessageBox.Show("Are you sure you want to close?",
                        "Close Application?",
                        MessageBoxButtons.YesNo, MessageBoxIcon.Question, 0, 0);
        switch (result)
        {
            case DialogResult.Yes:
                string commandText;
                int id_zawodnika = Int32.Parse(Request.QueryString["id"]);

                commandText = "UPDATE ZAWODNICY SET status = 0 WHERE id_zawodnika = @id_zawodnika";
                try
                {
                    string id_druzyny = "";
                    DataView zawodnik = (DataView)dbzawodnicy.Select(DataSourceSelectArguments.Empty);
                    if (zawodnik != null)
                        foreach (DataRowView drv in zawodnik)
                        {
                            id_druzyny = drv["id_druzyny"].ToString();
                        }

                    using (SqlConnection connection = new SqlConnection(dbzawodnicy.ConnectionString))
                    {
                        SqlCommand command = new SqlCommand(commandText, connection);

                        command.Parameters.Add("@id_zawodnika", SqlDbType.Int);
                        command.Parameters["@id_zawodnika"].Value = id_zawodnika;

                        connection.Open();
                        command.ExecuteNonQuery();

                    }

                    Response.Redirect("~/TeamProfile.aspx?t=" + id_druzyny);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    throw;
                }
            break;
        }
    }
    protected void Button6_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Teams.aspx");
    }
}
